home *** CD-ROM | disk | FTP | other *** search
/ The Programmer Disk / The Programmer Disk (Microforum).iso / xpro / qb2 / pro15 / city.pas < prev    next >
Pascal/Delphi Source File  |  1990-08-20  |  3KB  |  125 lines

  1. {
  2.  ******************************************************************************
  3.  * CITY - Solid line box demo.                              *
  4.  *                                          *
  5.  * Written for GRAFIX by:  Joseph A. Albrecht                      *
  6.  *                                          *
  7.  * Press ESC to exit program                              *
  8.  * Press F1 to pause program                              *
  9.  * Press F2 to restart                                  *
  10.  * Press F3 to toggle sound on/off                          *
  11.  * Press F10 to toggle between 320 and 640 graphics modes              *
  12.  ******************************************************************************
  13. }
  14.  
  15. PROGRAM City;
  16.  
  17. USES
  18.   Crt,
  19.   Grafix;
  20.  
  21. VAR
  22.   Graphics, IA, C, S, XO, CO, X1, Y1, X2, Y2: INTEGER;
  23.   EndProgram, Loop, Tandy11, DoSound: BOOLEAN;
  24.  
  25. PROCEDURE CheckKey;
  26.  
  27. VAR
  28.   Ch: CHAR;
  29.  
  30. BEGIN
  31.  
  32.   Ch := #255;
  33.   IF KeyPressed THEN
  34.     Ch := Readkey;
  35.   IF Ch = #00 THEN
  36.     Ch := Readkey;
  37.   IF Ch = #27 THEN
  38.     BEGIN
  39.       ExitGraphics;
  40.       Halt(0);
  41.     END;
  42.   IF Ch = #59 THEN
  43.     WaitKey;
  44.   IF Ch = #60 THEN
  45.     Loop := False;
  46.   IF Ch = #61 THEN
  47.     IF DoSound = True THEN
  48.       DoSound := False
  49.     ELSE
  50.       DoSound := True;
  51.   IF (Ch = #68) AND (Tandy11 = True) THEN
  52.     BEGIN
  53.       IF Graphics = 320 THEN
  54.     BEGIN
  55.       Graphics := 640;
  56.       XO := 160;
  57.       CO := 20;
  58.       Loop := False;
  59.       HighGraphics;
  60.     END
  61.       ELSE
  62.     BEGIN
  63.       Graphics := 320;
  64.       XO := 0;
  65.       CO := 0;
  66.       Loop := False;
  67.       MediumGraphics;
  68.     END;
  69.     END;
  70.  
  71. END;
  72.  
  73. {Mainline}
  74. BEGIN
  75.  
  76.   Graphics := 320;
  77.   XO := 0;
  78.   CO := 0;
  79.   DoSound := True;
  80.   EndProgram := False;
  81.   Loop := True;
  82.   GetTandy11(Tandy11);
  83.   AudioOff;
  84.   MediumGraphics;
  85.  
  86. WHILE EndProgram = False DO
  87.   BEGIN
  88.     ClearScreen;
  89.     FillBox(0 + XO, 0, 319 + XO, 199, Red);
  90.     FillBox(30 + XO, 30, 290 + XO, 170, 0);
  91.     ExtLineC(30 + XO, 30, 1 + XO, 1, LightGray);
  92.     ExtLineC(290 + XO, 30, 319 + XO, 1, LightGray);
  93.     ExtLineC(30 + XO, 170, 1 + XO, 199, LightGray);
  94.     ExtLineC(290 + XO, 170, 319 + XO, 199, LightGray);
  95.     DrawBox(30 + XO, 30, 290 + XO, 170, LightGray);
  96.     DrawBox(0 + XO, 0, 319 + XO, 199, LightGray);
  97.     FillBox(120 + XO, 182, 199 + XO, 193, Black);
  98.     DrawBox(119 + XO, 182, 200 + XO, 193, LightGray);
  99.     SetCursor(24, 16 + CO);
  100.     PrintStringX(' The City ');
  101.     Randomize;
  102.     WHILE Loop = True DO
  103.       BEGIN
  104.     X1 := Random(250) + 35;
  105.     X2 := Random(250) + 35;
  106.     X2 := (X1 - X2) DIV 4 + X2;
  107.     Y1 := Random(110) + 55;
  108.     Y2 := 165;
  109.     C := Random(15) + 1;
  110.     FillBox(X1 + XO, Y1, X2 + XO, Y2, C);
  111.     DrawBox(X1 + XO, Y1, X2 + XO, Y2, 0);
  112.     DrawBox(X1 + XO + 1, Y1 + 1, X2 + XO - 1, Y2 - 1, 0);
  113.     IA := Abs((X1 - X2) * (Y1 - Y2));
  114.     S := (Round(36400.0) - IA) DIV 360 + 37;
  115.     IF DoSound = True THEN
  116.       ExtSound(S, 2, 10, 0)
  117.     ELSE
  118.       Pause(2);
  119.     CheckKey;
  120.       END;
  121.     Loop := True;
  122.   END;
  123.  
  124. END.
  125.